perm filename DIVTST[TIM,LSP] blob sn#720411 filedate 1983-07-19 generic text, type T, neo UTF8
(FILECREATED "19-JUL-83 01:18:00" {PHYLUM}<GABRIEL>DIVTST.;1 2497   

      changes to:  (VARS DIVTSTCOMS)
		   (PROPS (ALPHAPASSWORD GLOBALVAR))
		   (FNS HASH.PASSWORD.16 HASH.PASSWORD.29 QT1 QT2))


(* Copyright (c) 1983 by Xerox Corporation)

(PRETTYCOMPRINT DIVTSTCOMS)

(RPAQQ DIVTSTCOMS ((VARS (ALPHAPASSWORD "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
		   (PROP GLOBALVAR ALPHAPASSWORD)
		   (FNS HASH.PASSWORD.16 HASH.PASSWORD.29 QT1 QT2)))

(RPAQ ALPHAPASSWORD "ABCDEFGHIJKLMNOPQRSTUVWXYZ")

(PUTPROPS ALPHAPASSWORD GLOBALVAR T)
(DEFINEQ

(HASH.PASSWORD.16
  (LAMBDA (PASSWORD)                                         (* JonL "19-JUL-83 00:57")

(* Compute remainder mod 16381 of PASSWORD considered as an arbitrary
length integer base 2↑14, whose digits  (from most to least
significant) are the characters in PASSWORD. Uses Horner's rule and
properties of modular  arithmetic to do it efficiently. 16381 is the
largest prime less than 2↑14. Intermediate results may require 16  bits
(e.g., the result of the ITIMES))


    (bind (HASH ← 0) for CHAR instring (MKSTRING PASSWORD)
       do (SETQ HASH (IMOD (IPLUS (ITIMES HASH (CONSTANT (IMOD (EXPT 2 14)
							       16381)))
				  CHAR)
			   16381))
       finally (RETURN HASH))))

(HASH.PASSWORD.29
  (LAMBDA (PASSWORD)                                         (* JonL "19-JUL-83 01:12")

(* Compute remainder mod 67108859 of PASSWORD considered as an arbitrary
length integer base 2↑26, whose digits  (from most to least
significant) are the characters in PASSWORD. Uses Horner's rule and
properties of modular  arithmetic to do it efficiently. 67108859 is
the largest prime less than 2↑26. Intermediate results may require 29
bits (e.g., the result of the ITIMES))


    (bind (HASH ← 0) for CHAR instring (MKSTRING PASSWORD)
       do (SETQ HASH (IMOD (IPLUS (ITIMES HASH (CONSTANT (IMOD (EXPT 2 26)
							       67108859)))
				  CHAR)
			   67108859))
       finally (RETURN HASH))))

(QT1
  (LAMBDA NIL                                                (* JonL "19-JUL-83 00:18")
    (TIMEALL (HASH.PASSWORD.16 ALPHAPASSWORD)
	     1000)))

(QT2
  (LAMBDA NIL                                                (* JonL "19-JUL-83 01:17")
    (TIMEALL (HASH.PASSWORD.29 ALPHAPASSWORD)
	     1000)))
)
(PUTPROPS DIVTST COPYRIGHT ("Xerox Corporation" 1983))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (545 2420 (HASH.PASSWORD.16 555 . 1314) (HASH.PASSWORD.29 1316 . 2086) (QT1 2088 . 2252)
 (QT2 2254 . 2418)))))
STOP